package com.graduation.springbootinit.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.graduation.springbootinit.model.entity.ShopPart.ClothingProduct;
import com.graduation.springbootinit.model.entity.ShopPart.SizeStock;

import java.math.BigDecimal;
import java.util.List;

public interface ClothingProductService extends IService<ClothingProduct> {
    
    /**
     * 创建商品
     */
    Long createProduct(ClothingProduct product);
    
    /**
     * 更新商品
     */
    void updateProduct(ClothingProduct product);
    
    /**
     * 删除商品
     */
    void deleteProduct(Long id);
    
    /**
     * 获取商品详情
     */
    ClothingProduct getProductById(Long id);
    
    /**
     * 分页获取商品列表
     *
     * @param page       分页参数
     * @param keyword    搜索关键词（商品名称或描述）
     * @param categoryId 分类ID
     * @param sortField  排序字段
     * @param sortOrder  排序方式
     * @param minPrice   最低价格
     * @param maxPrice   最高价格
     * @return 商品分页数据
     */
    Page<ClothingProduct> listProducts(Page<ClothingProduct> page, String keyword, Integer categoryId, 
            String sortField, String sortOrder, BigDecimal minPrice, BigDecimal maxPrice);
    
    /**
     * 分页获取店铺商品列表
     *
     * @param page    分页参数
     * @param storeId 店铺ID
     * @return 商品分页数据
     */
    Page<ClothingProduct> listStoreProducts(Page<ClothingProduct> page, Long storeId);
    
    /**
     * 更新商品尺码库存
     */
    void updateSizeStock(Long productId, List<SizeStock> sizeStocks);
    
    /**
     * 增加商品库存
     */
    boolean increaseStock(Long productId, String size, Integer quantity);
    
    /**
     * 减少商品库存
     */
    boolean decreaseStock(Long productId, String size, Integer quantity);


    /**
     * 获取店铺所有商品详情
     * @param storeId 店铺ID
     * @return 商品列表
     */
    List<ClothingProduct> getProductsByStoreId(Long storeId);
} 